home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / ugoku / src.lzh / MOVRECG / MRCGEDT.C < prev    next >
Text File  |  1994-09-09  |  23KB  |  958 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <te.h>
  6. #include <fntb.h>
  7. #include <gui.h>
  8. #include <file_dlg.h>
  9. #include <tifflib.h>
  10. #include <egb.h>
  11. #include <mos.h>
  12. #include <snd.h>
  13. #include "ugoku.h"
  14. #include "mrcdef.h"
  15.  
  16. extern    int        mouseSwCheck() ;
  17. extern    int        errorCheck( int ) ;
  18.  
  19. extern    char    *guiEgbPtr ;    /*    EGB é╠âÅü[âNâAâhâîâX    */
  20. extern    char    *rbuf ;            /*    Ä⌐ë╞É╗é╠âÅü[âNâAâhâîâX    */
  21. extern    char    *bbuf ;            /*    Ä⌐ë╞É╗é╠âÅü[âNâAâhâîâX    */
  22.  
  23. extern int    baseDialogId ;
  24.  
  25. int    edtDialogId[32] = -1 ;
  26. int    edtNumId[14] = -1 ;
  27. int    edtPNumId[15] = -1 ;
  28. int    edtMesId[52] = -1 ;
  29. int    edtScroId[15] = -1 ;
  30. int    edtSFDialogId[10] = -1 ;
  31. int    edtSFMesId[10] = -1 ;
  32. int    edtBtnId[20] = -1 ;
  33. int    edtWNumId[1] = -1 ;
  34. int    edtRecNumId[4] = -1 ;
  35. int    edtRecBtnId = -1 ;
  36. int    edtOkBtnId = -1 ;
  37. int    edtCanBtnId = -1 ;
  38. int    edtTIconId[2] = -1 ;
  39. int    edtSndDialogId = -1 ;
  40. int    edtSndListId = -1 ;
  41. int    edtSndScrId = -1 ;
  42. int    edtSndOkBtnId = -1 ;
  43. int    edtSndCanBtnId = -1 ;
  44. int    edtSndMesId[3] = -1 ;
  45.  
  46. static int sndNum[14] ;
  47. static int sndPan[15] ;
  48. static int rect[4] ;
  49. static int mainWait ;
  50. static int timingMode ;
  51. static char fileName[10][16] ;
  52. static int setFlag ;
  53. static char movFileName[100] ;
  54. static int ch71Flag = 1 ;
  55.  
  56. movEdit( namemov )
  57. char *namemov ;
  58. {
  59.     extern int editFrame( char *, char [][16], int ) ;
  60.  
  61.     FILE *fp;
  62.     char head[256];
  63.     int error ;
  64.     int i, j, ret, temp ;
  65.     int movframe, movx0, movy0, movx1, movy1, movwait ;
  66.     int var, min, max, delta, ptColumn ;
  67.     int prt, len, page ;
  68.  
  69. sv01:
  70.     for( i=0 ; i<80 ; i++ )
  71.     {
  72.         movFileName[i] = namemov[i] ;
  73.         if( namemov[i] == '\0' )break ;
  74.     }
  75.  
  76.     ret = mov_head_read_and_dsp( namemov, &movframe, &movx0, &movy0,
  77.     &movx1, &movy1, &movwait, 1, TL_malloc, TL_free );    /* ë║é╠ëµû╩é╔ò\Ī */
  78.     if( ret )return ret ;
  79.  
  80.     if( ( fp = fopen( namemov, "rb" ) ) == NULL )return 1;    /* read head */
  81.     temp = fread( head, 256, 1, fp );
  82.     fclose( fp );
  83.     if( temp < 1 )return 1;
  84.     if( DWORD(head+0) != 0x32564f4d )return 58;
  85.     if( DWORD(head+4) != 16 )return 58;
  86.     if( DWORD(head+16) != 320 )return 58;
  87.     if( DWORD(head+20) != 240 )return 58;
  88.         /* read */
  89.     for( i=0 ; i<6 ; i++ )sndNum[i] = BYTE( head + 48 + i );
  90.     for( i=0 ; i<8 ; i++ )sndNum[ 6 + i ] = BYTE( head + 64 + i );
  91.     for( i=0 ; i<14 ; i++ )
  92.     {
  93.         temp = BYTE( head + 136 + i );
  94.         if( temp >= 128 )temp = temp - 256;
  95.         if( temp < -64 )temp = -64;
  96.         if( temp > 63 )temp = 63;
  97.         sndPan[i] = temp;
  98.     }
  99.     sndPan[14] = sndPan[13] ;
  100.     mainWait = DWORD( head + 28 );    /* âEâGâCâg */
  101.     timingMode = BYTE( head + 150 ) & 1 ;    /* timing mode */
  102.     rect[0] = WORD( head + 32 ); rect[1] = WORD( head + 34 );    /* ì└òW */
  103.     rect[2] = WORD( head + 36 ); rect[3] = WORD( head + 38 );
  104.     if( rect[0]==0 && rect[1]==0 && rect[2]==0 && rect[3]==0 )
  105.     {
  106.         rect[2] = 319;
  107.         rect[3] = 239;
  108.     }
  109.  
  110.     for( i=0 ; i<10 ; i++ )
  111.     {
  112.         for( j=0 ; j<16 ; j++ )
  113.             fileName[i][j] = '\0' ;
  114.     }
  115.     for( i=0 ; i<8 ; i++ )
  116.     {
  117.         for( j=0 ; j<8 ; j++ )
  118.         {
  119.             fileName[i][j] = head[ 72 + i*8 + j ] ;
  120.         }
  121.     }
  122.     for( j=0 ; j<8 ; j++ )
  123.     {
  124.         fileName[8][j] = head[ 40 + j ] ;
  125.     }
  126.     for( j=0 ; j<8 ; j++ )
  127.     {
  128.         fileName[9][j] = head[ 56 + j ] ;
  129.     }
  130. /*        î│é╠âfü[â^é≡æ╕Ådé╖éΘé╜é▀,âNâèâAü[é═éΓé▀éΘ
  131.     for( i=0 ; i<10 ; i++ )
  132.     {
  133.         if( fileName[i][0] == '\0' )
  134.         {
  135.             for( j=0 ; j<8 ; j++ )
  136.                 fileName[i][j] = '\0' ;
  137.         }
  138.     }
  139. */
  140.         /* ò\Īâpâlâï âAâ^âbâ` */
  141.     MMI_SendMessage( edtDialogId[0], MM_ATTACH, 1, baseDialogId ) ;
  142.         /* ò\Īâpâlâïé╓âfü[â^é≡ô]æù */
  143.     for( i=0 ; i<14 ; i++ )
  144.     {
  145.         MMI_SendMessage( edtNumId[i], MM_GETNUMBOX, 5,
  146.                         &var, &min, &max, &delta, &ptColumn ) ;
  147.         MMI_SendMessage( edtNumId[i], MM_SETNUMBOX, 5,
  148.                         sndNum[i], min, max, delta, ptColumn ) ;
  149.     }
  150.     for( i=0 ; i<15 ; i++ )
  151.     {
  152.         MMI_SendMessage( edtPNumId[i], MM_GETNUMBOX, 5,
  153.                         &var, &min, &max, &delta, &ptColumn ) ;
  154.         MMI_SendMessage( edtPNumId[i], MM_SETNUMBOX, 5,
  155.                         sndPan[i], min, max, delta, ptColumn ) ;
  156.  
  157.         MMI_SendMessage( edtScroId[i], MM_GETSCROLL, 5,
  158.                         &prt, &min, &max, &len, &page ) ;
  159.         MMI_SendMessage( edtScroId[i], MM_SETSCROLL, 5,
  160.                         sndPan[i], min, max,len, page ) ;
  161.     }
  162.     MMI_SendMessage( edtWNumId[0], MM_GETNUMBOX, 5,
  163.                     &var, &min, &max, &delta, &ptColumn ) ;
  164.     MMI_SendMessage( edtWNumId[0], MM_SETNUMBOX, 5,
  165.                     mainWait, min, max, delta, ptColumn ) ;
  166.     for( i=0 ; i<4 ; i++ )
  167.     {
  168.         MMI_SendMessage( edtRecNumId[i], MM_GETNUMBOX, 5,
  169.                         &var, &min, &max, &delta, &ptColumn ) ;
  170.         MMI_SendMessage( edtRecNumId[i], MM_SETNUMBOX, 5,
  171.                         rect[i], min, max, delta, ptColumn ) ;
  172.     }
  173.     for( i=0 ; i<2 ; i++ )    /* â{â^âôâNâèâAü[ */
  174.         MTL_resetFlagObj( edtTIconId[i], (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  175.     MTL_setFlagObj( edtTIconId[timingMode+0], (MS_UNSELECT | MS_TOGGLE) ) ;
  176.     for( i=0 ; i<10 ; i++ )
  177.         MMI_SendMessage( edtSFMesId[i], MM_SETMSG, 1, fileName[i] );
  178.  
  179.     MMI_SendMessage( edtDialogId[21], MM_DETACH, 0 ) ;    /* ch71 detach */
  180.     MMI_SendMessage( edtDialogId[22], MM_DETACH, 0 ) ;
  181.  
  182.     MMI_SendMessage( edtDialogId[0], MM_SHOW, 0 ) ;        /* î⌐é╣éΘ */
  183.                                                         /* ch71 attach */
  184.  
  185.     ch71Flag = -1 ;
  186.     ch71ckeck() ;            /* ch71Flag = -1é╠é╞é½é═init */
  187.  
  188.     MMI_ExecSystem() ;        /* Dialogò\Īé╓ÑÑÑâCâxâôâgâïü[âv */
  189.  
  190.     MMI_SendMessage( edtDialogId[0], MM_ERASE, 0 ) ;
  191.     MMI_SendMessage( edtDialogId[0], MM_DETACH, 0 ) ;
  192.  
  193.     error = 0 ;
  194.     if( setFlag == TRUE )
  195.     {
  196.         for( i=0 ; i<6 ; i++ )BYTE( head + 48 + i ) = sndNum[i];
  197.         for( i=0 ; i<8 ; i++ )BYTE( head + 64 + i ) = sndNum[ 6 + i ];
  198.         for( i=0 ; i<14 ; i++ )
  199.         {
  200.             temp = sndPan[i];
  201.             if( temp < -64 )temp = -64;
  202.             if( temp > 63 )temp = 63;
  203.             BYTE( head + 136 + i ) = temp;
  204.         }
  205.         DWORD( head + 28 ) = mainWait;    /* âEâGâCâg */
  206.         BYTE( head + 150 ) = ( (BYTE( head + 150 ) & 0xfe) | timingMode ) ;
  207.                                         /* timing mode */
  208.         if( rect[0] > rect[2] )
  209.         {        /* ì└òW */
  210.             temp = rect[2]; rect[2] = rect[0]; rect[0] = temp;
  211.         }
  212.         if( rect[1] > rect[3] )
  213.         {
  214.             temp = rect[3]; rect[3] = rect[1]; rect[1] = temp;
  215.         }
  216.         WORD( head + 32 ) = rect[0]; WORD( head + 34 ) = rect[1];
  217.         WORD( head + 36 ) = rect[2]; WORD( head + 38 ) = rect[3];
  218.  
  219.         for( i=0 ; i<8 ; i++ )
  220.         {
  221.             for( j=0 ; j<8 ; j++ )
  222.             {
  223.                 head[ 72 + i*8 + j ] = fileName[i][j] ;
  224.             }
  225.         }
  226.         for( j=0 ; j<8 ; j++ )
  227.         {
  228.             head[ 40 + j ] = fileName[8][j] ;
  229.         }
  230.         for( j=0 ; j<8 ; j++ )
  231.         {
  232.             head[ 56 + j ] = fileName[9][j] ;
  233.         }
  234.  
  235.         for( i=0 ; i<6 ; i++ ){ /* write protect é╠ÅΩìç6ë±òKùv */ 
  236.             if(
  237.                 ( fp = fopen( namemov, "r+b" ) ) != NULL
  238.             )goto sv06;
  239.         }
  240.         error = 2 ;
  241.         goto sv07 ;
  242.     sv06:
  243.         fseek( fp, 0, SEEK_SET );
  244.         temp = fwrite( head, 256, 1, fp );
  245.         fclose( fp );
  246.         if( temp < 1 )error = 2;
  247.     sv07:
  248.         if( error == NOERR )
  249.         {
  250.             extern int playCheck() ;
  251.             int frame,x0,y0,x1,y1,wsize;
  252.  
  253.             error
  254.              = mov_memory_play_init( namemov, playCheck,&frame,&x0,&y0,&x1,&y1,
  255.              &wsize );
  256.  
  257.             if( error == NOERR )
  258.                 error = editFrame( namemov, fileName, ch71Flag ) ;
  259.         }
  260.         if( error == NOERR )goto sv01 ;
  261.     }
  262.     else
  263.     {
  264.         return NOERR ;
  265.     }
  266.  
  267.     if( error )
  268.     {
  269.         errorCheck( error ) ;
  270.     }
  271.  
  272.     return NOERR ;
  273. }
  274.  
  275. /* ch71(edtDialogId[21ü`22])é╠ùLî°û│î°é≡â`âFâbâNé╖éΘ */
  276. ch71ckeck()
  277. {
  278.     int i, n ;
  279.  
  280.     n = 0 ;
  281.     for( i=0 ; i<8 ; i++ )
  282.     {
  283.         if( (DWORD( fileName[i] )!=0) || (DWORD( fileName[i]+4 )!=0) )
  284.         {
  285.                 n = -1 ;
  286.                 break ;
  287.         }
  288.     }
  289.     if( n )
  290.     {
  291.         if( ch71Flag != 0 )
  292.         {
  293.             MMI_SendMessage( edtDialogId[21], MM_ERASE, 0 ) ;
  294.             MMI_SendMessage( edtDialogId[21], MM_DETACH, 0 ) ;
  295.  
  296.             MMI_SendMessage( edtDialogId[22], MM_ATTACH, 1, edtDialogId[3] ) ;
  297.             MMI_SendMessage( edtDialogId[22], MM_SHOW, 0 ) ;
  298.         }
  299.         ch71Flag = 0 ;
  300.     }
  301.     else
  302.     {
  303.         if( ch71Flag != 1 )
  304.         {
  305.             MMI_SendMessage( edtDialogId[21], MM_ATTACH, 1, edtDialogId[2] ) ;
  306.             MMI_SendMessage( edtDialogId[21], MM_SHOW, 0 ) ;
  307.  
  308.             MMI_SendMessage( edtDialogId[22], MM_ERASE, 0 ) ;
  309.             MMI_SendMessage( edtDialogId[22], MM_DETACH, 0 ) ;
  310.         }
  311.         ch71Flag = 1 ;
  312.     }
  313.     return NOERR ;
  314. }
  315.  
  316. /*    initDataIRCEDT:edtNumId[0ü`13]:MJ_NUMBOXL40é╠î─é╤Åoé╡è╓Éö    */
  317. int    edtNumFunc(kobj, messId, argc, pev, trigger)
  318. int        kobj ;
  319. int        messId ;
  320. int        argc ;
  321. EVENT    *pev ;
  322. int        trigger ;
  323. {
  324.     int    var, min, max, delta, ptColumn ;